//done

#ifndef mesinkata_c
#define mesinkata_c

#include <stdio.h>
#include <stdlib.h>
#include "mesinkar.h"
#include "boolean.h"
#include "mesinkata.h"


/*string dimulai dari indeks 0, sampai length-1 , indeks length berisi '\0' yaitu karakter penanda string selesai */
/*#define BLANK ' '*/
/*// blank / spasi*/
/*#define NEWLINE '\n'*/
/*// karakter newline*/
/*#define MaxStringLength 255*/
/*// panjang string maksimum*/

/*typedef struct {*/
/*	char s[MaxStringLength+1];*/
/*	int length;*/
/*} string;*/
// tipe data string
// length panjang string 



string cString;
boolean end;

//string cString;
// Current string, string yang saat ini sedang diakuisisi

//boolean end;
// Menandai apakah sudah end of pita kata / CC = MARK

//--------------
//  SELEKTOR
//--------------
// Length(S) : (S).Length 


//--------------
//  PRIMITIF
//--------------

void Ignore_Blank(FILE *f)
/* Mengabaikan blank pada pita karakter dari File jika F terdefinisi, 
jika tidak dari std_input */
{	
	while ((CC==BLANK)||(CC==NEWLINE)) {
		ADV(f);
	}	
}

void StartString(FILE *f)
/* Menginisiasi pembacaan pita karakter dari File jika F terdefinisi, 
jika tidak dari std_input */
{	
	boolean isString=0;
	end = 0;
	cString.length = 0;
	START(f);
	Ignore_Blank(f);

	while (((CC != BLANK)||(isString==1))&&(CC != MARK)) {
		if (CC==39) {
			//tanda petik
			isString=1;
			}
		if ((CC==')')||(CC==',')) {
			isString=0;
			}
		cString.s[cString.length]=CC;
		cString.length++;
		ADV(f);	
	}
	cString.s[cString.length]='\0';
	//printf("cString = %s\n",cString);
	
	Ignore_Blank(f);
	if (CC==MARK){
		end=1;
	}
}

void AdvString(FILE *f)
/* Mengakuisisi 1 kata menjadi 1 string dari File jika F terdefinisi, 
jika tidak dari std_input */
{
	boolean isString=0;
	end = 0;
	cString.length = 0;
	Ignore_Blank(f);
	while (((CC != BLANK)||(isString==1))&&(CC != MARK)) {
		if (CC==39) {
			//tanda petik
			isString=1;
			}
		if ((CC==')')||(CC==',')) {
			isString=0;
			}
		cString.s[cString.length]=CC;
		cString.length++;
		ADV(f);	
	}
	cString.s[cString.length]='\0';
	//printf("cString = %s\n",cString);
	
	Ignore_Blank(f);
	if (CC==MARK){
		end=1;
	}
}


#endif
